home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / PROBLEMS / ASM / TLA_EXAMINE < prev   
Text File  |  1991-10-27  |  966b  |  57 lines

  1.  
  2. Zur Addressarithmetik:
  3.  
  4. Wenn der Assembler relocatable code erzeugt ist es natuerlich
  5. einigermassen umoeglich Addressen zu multipliziern und dividieren.
  6. Subtrathieren kann man sie solange die relativen schon definiert
  7. sind. relativ - relativ = absolute
  8.  
  9. Instruktionen wie
  10.  
  11. MOV R0, #Addresse / 256
  12.  
  13. wo Addresse eine relocatale address ist, koennen nicht erzeugt werden,
  14. da der Wert von Address beim Assemblieren unbekannt ist.
  15.  
  16. Das man doch so einiges machen kann, zeigt folgendes Beispiel:
  17.  
  18.  
  19.     .PROC    test
  20.  
  21.     .ENTRY    start
  22.  
  23.  
  24.     .MACRO    LOAD
  25. \load 
  26.     .IF    \load - %2 > 4084.
  27.         MOV    %1,     #((\load - %2 + 8 + 8) / 100) << 8
  28.     ADD    %1, %1, #((\load - %2 + 8 + 8) & 0FF)
  29.     SUB    %1, PC, %1
  30.         LDR    %1, [%1]
  31.     .ELSE
  32.     LDR    %1, %2
  33.     .ENDC
  34.     .ENDM
  35.  
  36.  
  37. textaddress:
  38.     .WORD    text
  39. text:
  40.     .STRING    "This is a far away string."
  41.     .ALIGN
  42.     .BLOCK    2000
  43.  
  44. start:
  45.     LOAD    R0, textaddress
  46.     SWI    OS_Write0
  47.     SWI    OS_NewLine
  48.     SWI    OS_Exit
  49.  
  50.     .END
  51.  
  52.  
  53. Dies ist sogar relocatable code, man kann ihn linken.
  54.  
  55.  
  56.  
  57.